"""
    提取大模型生成GRR的标签, 并去重, 接着生成一个列表
"""

import argparse
import pandas as pd 


def extract_label_to_list(input, output):
    
    df = pd.read_excel(input)
    # title = df.columns.tolist()
    # print(title)

    result = []
    for row in df.values.tolist():
        # print(row)
        # 因为使用了 glm4 免费的，这个模型会有一部分结果不完全是标准的 JSON 格式，
        # 因此写了下面的这个处理
        row_3 = eval(
            "['" + 
            row[2].strip('"]').strip("'").strip("['").strip('"').replace("', '", 
                "---").replace('"', "'").replace("'", "").replace("---", "', '")
            + "']"
        )
        for i in row_3:
            result.append(i)
    result = list(set(result))
    
    # 对字母一样的label去重
    tmp_dict = {}
    for i in result:
        i_lower = i.lower()
        if i_lower not in tmp_dict:
            tmp_dict[i_lower] = [] 
        tmp_dict[i_lower].append(i)
    result_list = []
    for k,v in tmp_dict.items():
        result_list.append(v[0])
        
    with open(output, mode="w", encoding="utf-8") as file:
        file.write("\n".join(result_list))
    

def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument("-input", "--input")
    parser.add_argument("-output", "--output")
    params = parser.parse_args()
    
    return params 


if __name__ == "__main__":
    params = parse_args()
    input = params.input
    output = params.output 
    extract_label_to_list(input, output)